/**
 * Universidad del Valle de Guatemala
 * Algoritmos y estructura de Datos.
 * @autor Evelyn Lissete Paiz   11365
 * Sección: 20
 * 15 de julio, 2012
 * Interfaz que define a una pila.
 */

package hoja_dos;

public interface Stack <E> {
    
    /**
     * Método encargado de guardar un dato en la pila.
     * pre: -
     * post: Se agrega un nuevo dato a la pila.
     * @param dato El dato que se va a guardar. 
     */
    public void push (E dato);
    
    /**
     * Método encargado de sacar un dato de la pila (el último en ingresarse).
     * pre: La pila no se encuentra vacia.
     * post: Se remueve último dato ingresado.
     */
    public E pop ();
    
    /**
     * Método encargado de permitir observar el último dato que se ingesó.
     * pre: La pila no se encuentra vacia.
     * post: Se regresa el valor del dato más proximó a remover.
     */
    public E peek ();
    
    /**
     * Método encargado de revisar si la pila se encuentra vacia.
     * pre: -
     * post: regresa tru si está vacia o false si tiene algún dato.
     */
    public boolean empty();
    
    /**
     * Método encargado de mostrar el número de datos que contiene la pila.
     * pre: -
     * post: Retorna el número de datos que hay en la pila. 
     */
    public int size();
    
}
